package com.pe.pgn.clubpgn.domain;

import java.math.BigDecimal;
import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.compass.annotations.Searchable;
import org.compass.annotations.SearchableId;
import org.hibernate.annotations.Type;
import org.springframework.format.annotation.DateTimeFormat;

@Entity
@Table(name = "clpb_almacen")
@Searchable
public class ClpbAlmacen extends CamposAuditoria {

	/**
	 * 
	 */
	private static final long serialVersionUID = -209937860150182648L;
	private	Long id	;
	private	ClpmUbigeo clpmUbigeo;
	private	String deAlmacen;
	private	String deDireccion;
	private	String coCodigoAlmacen;
	private	String deReferencia;
	private	ClpbEstacion clpbEstacion;
	private	String deJrAvCa;
	private	String deNumero;
	private	String deMzLote;
	private	String deDptoPisoInt;
	private	String deUrbIndResUnVec;
	private	String deSecEtapaZona;
	private	boolean stEsAlmacenVirtual;
	private	boolean stEsAlmacenPrincipal;
	private	boolean stEsPuntoCanje;
	private	boolean stAlmacen;
	
	@Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @SearchableId
	public Long getId() {
		return id;
	}

    @ManyToOne(targetEntity = ClpmUbigeo.class)
    @JoinColumn(name="co_ubigeo")
	public ClpmUbigeo getClpmUbigeo() {
		return clpmUbigeo;
	}

	@Column(name = "de_almacen", nullable = false, length = 150)
	public String getDeAlmacen() {
		return deAlmacen;
	}

	@Column(name = "de_direccion", length = 100)
	public String getDeDireccion() {
		return deDireccion;
	}

	@Column(name = "co_codigo_almacen", length = 50)
	public String getCoCodigoAlmacen() {
		return coCodigoAlmacen;
	}

	@Column(name = "de_referencia", length = 50)
	public String getDeReferencia() {
		return deReferencia;
	}

    @ManyToOne(targetEntity = ClpbEstacion.class)
    @JoinColumn(name="co_estacion")
	public ClpbEstacion getClpbEstacion() {
		return clpbEstacion;
	}

	@Column(name = "de_jr_av_ca", length = 50)
	public String getDeJrAvCa() {
		return deJrAvCa;
	}

	@Column(name = "de_numero", length = 50)
	public String getDeNumero() {
		return deNumero;
	}

	@Column(name = "de_mz_lote", length = 50)
	public String getDeMzLote() {
		return deMzLote;
	}

	@Column(name = "de_dpto_piso_int", length = 50)
	public String getDeDptoPisoInt() {
		return deDptoPisoInt;
	}

	@Column(name = "de_urb_ind_res_un_vec", length = 50)
	public String getDeUrbIndResUnVec() {
		return deUrbIndResUnVec;
	}

	@Column(name = "de_sec_etapa_zona", length = 50)
	public String getDeSecEtapaZona() {
		return deSecEtapaZona;
	}

	@Column(name = "st_es_almacen_virtual")
	@Type(type = "yes_no") 
	public boolean isStEsAlmacenVirtual() {
		return stEsAlmacenVirtual;
	}

	@Column(name = "st_es_almacen_principal")
	@Type(type = "yes_no") 
	public boolean isStEsAlmacenPrincipal() {
		return stEsAlmacenPrincipal;
	}
	
	@Column(name = "st_es_punto_canje")
	@Type(type = "yes_no") 
	public boolean isStEsPuntoCanje() {
		return stEsPuntoCanje;
	}

	@Column(name = "st_almacen", nullable = false)
	@Type(type = "yes_no") 
	public boolean isStAlmacen() {
		return stAlmacen;
	}

	@Column(name = "co_usuario_creador", updatable = false, nullable = false, length = 30)
	public String getCoUsuarioCreador() {
		return coUsuarioCreador;
	}

    @Column(name = "da_fecha_creacion", updatable = false, nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaCreacion() {
		return daFechaCreacion;
	}

	@Column(name = "co_usuario_modificador", length = 30)
	public String getCoUsuarioModificador() {
		return coUsuarioModificador;
	}

    @Column(name = "da_fecha_modificacion")
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaModificacion() {
		return daFechaModificacion;
	}	 
    
	public void setId(Long id) {
		this.id = id;
	}

	public void setClpmUbigeo(ClpmUbigeo clpmUbigeo) {
		this.clpmUbigeo = clpmUbigeo;
	}

	public void setDeAlmacen(String deAlmacen) {
		this.deAlmacen = deAlmacen;
	}

	public void setDeDireccion(String deDireccion) {
		this.deDireccion = deDireccion;
	}

	public void setCoCodigoAlmacen(String coCodigoAlmacen) {
		this.coCodigoAlmacen = coCodigoAlmacen;
	}

	public void setDeReferencia(String deReferencia) {
		this.deReferencia = deReferencia;
	}

	public void setClpbEstacion(ClpbEstacion clpbEstacion) {
		this.clpbEstacion = clpbEstacion;
	}

	public void setDeJrAvCa(String deJrAvCa) {
		this.deJrAvCa = deJrAvCa;
	}

	public void setDeNumero(String deNumero) {
		this.deNumero = deNumero;
	}

	public void setDeMzLote(String deMzLote) {
		this.deMzLote = deMzLote;
	}

	public void setDeDptoPisoInt(String deDptoPisoInt) {
		this.deDptoPisoInt = deDptoPisoInt;
	}

	public void setDeUrbIndResUnVec(String deUrbIndResUnVec) {
		this.deUrbIndResUnVec = deUrbIndResUnVec;
	}

	public void setDeSecEtapaZona(String deSecEtapaZona) {
		this.deSecEtapaZona = deSecEtapaZona;
	}

	public void setStEsAlmacenVirtual(boolean stEsAlmacenVirtual) {
		this.stEsAlmacenVirtual = stEsAlmacenVirtual;
	}

	public void setStEsAlmacenPrincipal(boolean stEsAlmacenPrincipal) {
		this.stEsAlmacenPrincipal = stEsAlmacenPrincipal;
	}

	public void setStEsPuntoCanje(boolean stEsPuntoCanje) {
		this.stEsPuntoCanje = stEsPuntoCanje;
	}

	public void setStAlmacen(boolean stAlmacen) {
		this.stAlmacen = stAlmacen;
	}

	@Override
	public boolean equals(Object o) {
		return false;
	}

	@Override
	public int hashCode() {
		return 0;
	}

	@Override
	public String toString() {
		return this.deAlmacen;
	}
	
	private BigDecimal coDepartamento;
	private String deDepartamento;
	private BigDecimal coProvincia;
	private String deProvincia;

	@Transient
	public BigDecimal getCoDepartamento() {
		return coDepartamento;
	}

	@Transient
	public String getDeDepartamento() {
		return deDepartamento;
	}

	@Transient
	public BigDecimal getCoProvincia() {
		return coProvincia;
	}

	@Transient
	public String getDeProvincia() {
		return deProvincia;
	}

	public void setCoDepartamento(BigDecimal coDepartamento) {
		this.coDepartamento = coDepartamento;
	}

	public void setDeDepartamento(String deDepartamento) {
		this.deDepartamento = deDepartamento;
	}

	public void setCoProvincia(BigDecimal coProvincia) {
		this.coProvincia = coProvincia;
	}

	public void setDeProvincia(String deProvincia) {
		this.deProvincia = deProvincia;
	}

}
